@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

REM 简化部署脚本 - Windows版本

set SERVER_IP=212.64.32.91
set SERVER_PORT=22
set SERVER_USER=ubuntu
set SERVER_PASSWORD=shafei@0607
set REMOTE_DIR=/home/ubuntu/jd_credit
set REMOTE_LOG_DIR=/home/ubuntu/jd_credit/logs
set LOCAL_JAR=target\jd_credit-1.0-SNAPSHOT.jar
set JAR_NAME=jd_credit-1.0-SNAPSHOT.jar

echo.
echo ==========================================
echo    JD信贷系统 - 自动部署到云服务器
echo ==========================================
echo.
echo 服务器: %SERVER_USER%@%SERVER_IP%
echo.

REM 步骤1: 打包
echo [1/3] 打包JAR文件...
echo.

call mvn clean package -DskipTests -q

if not exist "%LOCAL_JAR%" (
    echo [错误] 打包失败
    pause
    exit /b 1
)

echo [成功] 打包完成
echo.

REM 步骤2: 上传
echo [2/3] 上传到服务器...
echo.

REM 检查pscp是否存在（PuTTY的scp工具）
where pscp >nul 2>&1
if %errorlevel% equ 0 (
    REM 使用pscp上传
    echo | pscp -pw %SERVER_PASSWORD% -P %SERVER_PORT% "%LOCAL_JAR%" %SERVER_USER%@%SERVER_IP%:%REMOTE_DIR%/%JAR_NAME%
    set UPLOAD_RESULT=!errorlevel!
) else (
    REM 检查是否安装了Windows版的scp（Git Bash或OpenSSH）
    where scp >nul 2>&1
    if !errorlevel! equ 0 (
        REM 使用scp上传（需要手动输入密码或配置SSH密钥）
        echo 提示: 请输入密码: %SERVER_PASSWORD%
        scp -P %SERVER_PORT% "%LOCAL_JAR%" %SERVER_USER%@%SERVER_IP%:%REMOTE_DIR%/%JAR_NAME%
        set UPLOAD_RESULT=!errorlevel!
    ) else (
        echo [错误] 未找到文件传输工具
        echo.
        echo 请安装以下工具之一:
        echo   1. PuTTY (推荐): https://www.putty.org/
        echo      安装后将pscp.exe添加到系统PATH
        echo   2. Git for Windows: https://git-scm.com/
        echo   3. OpenSSH Client (Windows 10+): 在"可选功能"中安装
        echo.
        pause
        exit /b 1
    )
)

if !UPLOAD_RESULT! neq 0 (
    echo [错误] 上传失败
    pause
    exit /b 1
)

echo [成功] 上传完成
echo.

REM 步骤3: 重启服务
echo [3/3] 重启服务...
echo.

REM 检查plink是否存在（PuTTY的ssh工具）
where plink >nul 2>&1
if %errorlevel% equ 0 (
    REM 使用plink执行远程命令
    echo y | plink -pw %SERVER_PASSWORD% -P %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_DIR% && chmod +x restart.sh && ./restart.sh"
) else (
    REM 检查是否安装了Windows版的ssh
    where ssh >nul 2>&1
    if !errorlevel! equ 0 (
        echo 提示: 请输入密码: %SERVER_PASSWORD%
        ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_DIR% && chmod +x restart.sh && ./restart.sh"
    ) else (
        echo [警告] 未找到SSH工具，跳过自动重启
        echo 请手动登录服务器执行重启脚本
        echo.
        echo 手动重启命令:
        echo   ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP%
        echo   cd %REMOTE_DIR%
        echo   ./restart.sh
    )
)

echo [成功] 重启命令已执行
echo.

echo ==========================================
echo.
echo [完成] 部署完成！
echo.

REM 等待服务启动
echo [信息] 等待服务启动（5秒）...
timeout /t 5 /nobreak >nul
echo.

REM 查看日志选项
echo ==========================================
echo    是否查看服务器日志？
echo ==========================================
echo 1) 实时查看日志 (tail -f)
echo 2) 查看最新50行日志
echo 3) 查看最新100行日志
echo 4) 列出所有日志文件
echo 5) 不查看，直接退出
echo.
set /p choice="请选择 [1-5]: "

if "%choice%"=="1" goto view_realtime
if "%choice%"=="2" goto view_50
if "%choice%"=="3" goto view_100
if "%choice%"=="4" goto list_logs
goto exit_script

:view_realtime
echo.
echo [信息] 实时查看日志（按Ctrl+C退出）...
echo ==========================================

where plink >nul 2>&1
if %errorlevel% equ 0 (
    echo y | plink -pw %SERVER_PASSWORD% -P %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -f $(ls -t *.log 2>/dev/null | head -1)"
) else (
    where ssh >nul 2>&1
    if !errorlevel! equ 0 (
        ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -f $(ls -t *.log 2>/dev/null | head -1)"
    ) else (
        echo [错误] 未找到SSH工具
    )
)
goto final_tips

:view_50
echo.
echo [信息] 最新50行日志：
echo ==========================================

where plink >nul 2>&1
if %errorlevel% equ 0 (
    echo y | plink -pw %SERVER_PASSWORD% -P %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -n 50 $(ls -t *.log 2>/dev/null | head -1)"
) else (
    where ssh >nul 2>&1
    if !errorlevel! equ 0 (
        ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -n 50 $(ls -t *.log 2>/dev/null | head -1)"
    ) else (
        echo [错误] 未找到SSH工具
    )
)
echo.
goto final_tips

:view_100
echo.
echo [信息] 最新100行日志：
echo ==========================================

where plink >nul 2>&1
if %errorlevel% equ 0 (
    echo y | plink -pw %SERVER_PASSWORD% -P %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -n 100 $(ls -t *.log 2>/dev/null | head -1)"
) else (
    where ssh >nul 2>&1
    if !errorlevel! equ 0 (
        ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "cd %REMOTE_LOG_DIR% && tail -n 100 $(ls -t *.log 2>/dev/null | head -1)"
    ) else (
        echo [错误] 未找到SSH工具
    )
)
echo.
goto final_tips

:list_logs
echo.
echo [信息] 日志文件列表：
echo ==========================================

where plink >nul 2>&1
if %errorlevel% equ 0 (
    echo y | plink -pw %SERVER_PASSWORD% -P %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "ls -lh %REMOTE_LOG_DIR%/*.log 2>/dev/null || echo '暂无日志文件'"
) else (
    where ssh >nul 2>&1
    if !errorlevel! equ 0 (
        ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "ls -lh %REMOTE_LOG_DIR%/*.log 2>/dev/null || echo '暂无日志文件'"
    ) else (
        echo [错误] 未找到SSH工具
    )
)
echo.
goto final_tips

:exit_script
echo.
echo [信息] 部署完成，已退出
goto final_tips

:final_tips
echo.
echo ==========================================
echo.
echo [提示]
echo   查看日志: ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP% "tail -f %REMOTE_LOG_DIR%/*.log"
echo   登录服务器: ssh -p %SERVER_PORT% %SERVER_USER%@%SERVER_IP%
echo.
echo ==========================================
echo.

pause
